In [1]:
import random

class Tamagotchi:
    """Clase que representa a una mascota virtual o 'Tamagotchi'.
        Juego de palabras entre tamago y tomodachi (?)
    """
    
    VALOR_INICIAL_HAMBRE = 50
    VALOR_INICIAL_ENERGIA = 50
    VALOR_INICIAL_FELICIDAD = 0
    
    GASTO_ENERGIA_JUGAR = 10
    AUMENTO_FELICIDAD_JUGAR = 10
    
    GASTO_RECURSOS_HORA = 3
    PROBABILIDAD_ENFERMAR = 0.3
    
    
    def __init__(self):
        """Pos: Devuelve un Tamagotchi de 0 dias de vida y con la mitad de la energia y hambre"""
        self.edad = 0
        self.hambre = Tamagotchi.VALOR_INICIAL_HAMBRE
        self.energia = Tamagotchi.VALOR_INICIAL_ENERGIA
        self.felicidad = Tamagotchi.VALOR_INICIAL_FELICIDAD
        self.enfermo = False
        
        
    def __nivelar(self):
        """Nivela todos los atributos para que esten dentro de los margenes predefinidos"""
        if self.hambre < 0:
            self.hambre = 0
            
        if self.energia > 100:
            self.energia = 100
        elif self.energia < 0:
            self.energia = 0
            
        if self.felicidad > 50:
            self.felicidad = 50
        elif self.felicidad < -50:
            self.felicidad = -50
            
        
    def jugar(self):
        """El Tamagotchi juega
           Pos: La felicidad aumenta y la energia disminuye; si tenia energia suficiente"""
        if self.energia < Tamagotchi.GASTO_ENERGIA_JUGAR:
            return
        
        self.felicidad += Tamagotchi.AUMENTO_FELICIDAD_JUGAR
        self.energia -= Tamagotchi.GASTO_ENERGIA_JUGAR
        
        self.__nivelar()

        
    def vivir(self,cantidad_horas = 1):
        """Simula "cantidad_horas" horas de vida de un Tamagotchi.
           Pos: el Tamagochi aumenta su edad acorde al tiempo. Gasta sus 'recursos' acorde al tiempo 
        """
        self.edad += cantidad_horas / 24 #la edad esta expresada en años
        self.hambre += cantidad_horas * Tamagotchi.GASTO_RECURSOS_HORA
        self.energia -= cantidad_horas * Tamagotchi.GASTO_RECURSOS_HORA
        self.felicidad -= cantidad_horas * Tamagotchi.GASTO_RECURSOS_HORA
        self.enfermo = self.enfermo or random.random() < Tamagotchi.PROBABILIDAD_ENFERMAR
        
        self.__nivelar()
     
    
    def esta_vivo(self):
        """Indica si el Tamagotchi sigue vio o no"""
        return self.hambre < 100
        
        
    def tiene_hambre(self):
        """Indica si el Tamagotchi tiene mas del limite aceptable de hambre"""
        return self.hambre > 45
    
    
    def esta_feliz(self):
        """Indica si el Tamagotchi tiene mas del limite aceptable de felicidad"""
        return self.felicidad > 0
    
    
    def esta_cansado(self):
        """Indica si el Tamagotchi tiene mas del limite aceptable de energia"""
        return self.energia <= 0
    
    
    def comer(self,alimento):
        """Alimenta al Tamagotchi con el alimento pasado como parametro"""
        self.hambre -= alimento.obtener_valor_nutricional()
        self.__nivelar()

In [2]:
tomodachi = Tamagotchi()

for x in range(6):
    tomodachi.jugar()
    print("Esta feliz: ",tomodachi.esta_feliz(), ". Esta cansado:",tomodachi.esta_cansado())


Esta feliz:  True . Esta cansado: False
Esta feliz:  True . Esta cansado: False
Esta feliz:  True . Esta cansado: False
Esta feliz:  True . Esta cansado: False
Esta feliz:  True . Esta cansado: True
Esta feliz:  True . Esta cansado: True

In [3]:
class Alimento:
    
    def __init__(self,nombre,valor_nutricional):
        """ """
        self.nombre = nombre
        self.valor_nutricional = valor_nutricional
        
    def obtener_valor_nutricional(self):
        """ """
        return self.valor_nutricional

In [4]:
print("Tiene hambre: ",tomodachi.tiene_hambre())
tomodachi.vivir(4)
print("Tiene hambre: ",tomodachi.tiene_hambre())
zanahoria = Alimento("Zanahoria",20)
tomodachi.comer(zanahoria)
print("Tiene hambre: ",tomodachi.tiene_hambre())


Tiene hambre:  True
Tiene hambre:  True
Tiene hambre:  False

In [ ]: